<?php

require_once __DIR__ . '/ControllerAbstract.php';
require_once __DIR__ . '/ControllerMembro.php';
require_once '..' . DS . '/Models/ModelVinculo.php';
require_once '..' . DS . '/Models/ModelTipoEntrada.php';
require_once '..' . DS . '/Models/ModelTipoPagamento.php';
require_once '..' . DS . '/Models/ModelEntrada.php';
require_once '..' . DS . '/Models/ModelData.php';

/**
 * Description of teste
 *
 * @author david
 */
class ControllerEntrada extends ControllerAbstract {

    protected $bancodedados = [];

    public function __construct($config) {
        parent::__construct($config);
    }

    public function principal() {
        $modelData = new ModelData();
        $data[] = $modelData->getMeses();
        $data[] = $modelData->getAnos();

        $this->render("entrada/principal", $data);
    }

    public function novo() {
        $this->render("entrada/novo");
    }

    /**
     * Renderiza o formulário para entradas
     * @param $_POST
     */
    public function formVinculo() {
        $modelTipoEntrada = new ModelTipoEntrada();
        $tipoEntrada = $modelTipoEntrada->getTipoEntrada(1);

        $modelTipoPagamento = new ModelTipoPagamento();
        $tipoPagemento = $modelTipoPagamento->getTipoPagamento();

        $data[] = $tipoEntrada;
        $data[] = $tipoPagemento;

        $this->render('entrada/form', $data);
    }

    public function formNotVinculo() {
        $modelTipoEntrada = new ModelTipoEntrada();
        $tipoEntrada = $modelTipoEntrada->getTipoEntrada(2);

        $modelTipoPagamento = new ModelTipoPagamento();
        $tipoPagemento = $modelTipoPagamento->getTipoPagamento();

        $data[] = $tipoEntrada;
        $data[] = $tipoPagemento;

        $this->render('entrada/form', $data);
    }

    /**
     * Renderiza lista de membros para inserção de entrada
     * @param $_POST
     */
    public function membro() {
        $modelMembro = new ModelMembro();
        $membros = $modelMembro->getMembros("","");

        $data[] = $membros;
        $data[] = "entrada";

        $this->render('membro/lista', $data);
    }

    public function alterar() {
        if (isset($_POST["membro"]) && isset($_POST["tipoentrada"]) && isset($_POST["tipopagamento"]) && isset($_POST["valor"]) && isset($_POST["vinculo"])) {
            $modelVinculo = new ModelVinculo();
            $vinculo = $modelVinculo->getTipoVinculo();

            $modelTipoEntrada = new ModelTipoEntrada();
            $tipoEntrada = $modelTipoEntrada->getTipoEntrada($_POST["vinculo"]);

            $modelTipoPagamento = new ModelTipoPagamento();
            $tipoPagamento = $modelTipoPagamento->getTipoPagamento();

            $modelMembro = new ModelMembro();
            $membros = $modelMembro->getMembros("","");

            $data[] = $tipoEntrada;
            $data[] = $tipoPagamento;
            $data[] = $vinculo;
            $data[] = $membros;

            $this->render("entrada/form", $data);
        } else {
            $this->render("padroes/404");
        }
    }

    /**
     * Renderiza lista de entradas visualização e edição
     * @param $_POST
     */
    public function lista() {
        if (isset($_POST["mes"]) && isset($_POST["ano"])) {
            $mes = $_POST["mes"];
            $ano = $_POST["ano"];
        } else {
            $mes = date('m');
            $ano = date('Y');
        }

        $modelEntrada = new ModelEntrada();
        $entradas = $modelEntrada->getEntrada($mes, $ano);

        $this->render("entrada/lista", $entradas);
    }

    /**
     * Insere entrada no banco de dados
     * @param $_POST
     */
    public function insert() {

        if (isset($_POST["codigo"]) && isset($_POST["valor"]) && isset($_POST["tipoentrada"]) && isset($_POST["tipopagamento"])) {
            $modelEntrada = new ModelEntrada();
            $resultado = $modelEntrada->setEntrada($_POST["valor"], $_POST["tipoentrada"], $_POST["codigo"], $_SESSION["sis_id"], $_POST["tipopagamento"]);
        } else {
            $resultado = "erro";
        }

        echo $resultado;
    }

    /**
     * Atualiza entrada no banco de dados
     * @return string
     */
    public function update() {
        if (isset($_POST["codigo"]) && isset($_POST["membro"]) && isset($_POST["tipoentrada"]) && isset($_POST["tipopagamento"]) && isset($_POST["valor"]) && isset($_POST["vinculo"])) {
            if ($_POST["vinculo"] == 2) {
                $membro = null;
            } else {
                $membro = $_POST["membro"];
            }

            $modelEntrada = new ModelEntrada();
            $resultado = $modelEntrada->setUpdateEntrada($_POST["codigo"], $membro, $_POST["tipoentrada"], $_POST["valor"], $_POST["tipopagamento"]);
        } else {
            $resultado = "erro";
        }
        return $resultado;
    }

    /**
     * Exclui a entrada banco de dados
     * @param $_POST
     */
    public function delete() {
        if (isset($_POST["codigo"]) && !empty($_POST["codigo"])) {

            $modelEntrada = new ModelEntrada();
            $resultado = $modelEntrada->setDeleteEntrada($_POST["codigo"]);
        } else {
            $resultado = "erro";
        }

        echo $resultado;
    }

}
